package com.qbm.association.controller;

import com.qbm.association.bean.ResultBean;
import com.qbm.association.config.WebConfig;
import com.qbm.association.util.FileUploadUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;


@RestController
@RequestMapping(value = "file")
public class FileController {


    @PostMapping("uploadFile")
    public ResultBean uploadFile(MultipartFile file) {
        try {
            if (!file.isEmpty()) {
                String name = FileUploadUtils.uploadPicture(WebConfig.getUploadPath(), file);
                // TODO: 此处可以根据项目需求的业务进行操作，例如此处操作的是头像，可以将头像url保存到数据库，用户登录后，获取相应的url获取头像图片。
                return ResultBean.success(WebConfig.getUploadPath()+name, "文件上传成功");
            } else {
                return ResultBean.fail("文件上传失败");
            }
        } catch (Exception e) {
            return ResultBean.fail("文件上传失败");
        }
    }

//    /**
//     * 下载头像图片
//     *
//     * @param url      请求的图片url
//     * @param response
//     */
//    @GetMapping("upload")
//    public void getUrlFile(String url, HttpServletResponse response) {
//        // 这里的url，我为了测试，直接就写静态的。
//        url = "D:/profile/test.jpg";
//        System.err.println(url);
//        File file = new File(WebConfig.getAvatarPath() + url);
//        // 后缀名
////		String suffixName = url.substring(url.lastIndexOf("."));
//        // 判断文件是否存在如果不存在就返回默认图片或者进行异常处理
//        if (!(file.exists() && file.canRead())) {
////            file = new File("xxx/xxx.jpg");
//            System.out.println("文件不存在");
//        }
//        FileInputStream inputStream = null;
//        try {
//            inputStream = new FileInputStream(file);
//            byte[] data = new byte[(int) file.length()];
//            inputStream.read(data, 0, data.length);
//            inputStream.close();
//            response.setContentType("image/png;charset=utf-8");
//            OutputStream stream = response.getOutputStream();
//            stream.write(data);
//            stream.flush();
//            stream.close();
//        } catch (FileNotFoundException e) {
//            e.printStackTrace();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//
//    /**
//     * 上传文章图片
//     *
//     * @param file 要上传的图片文件
//     * @return
//     */
//    @PostMapping("updatePicture")
//    public ResultBean updatePicture(MultipartFile file) {
//        try {
//            Assert.isTrue(!file.isEmpty(), "图片上传失败");
//            String avatar = FileUploadUtils.uploadPicture(WebConfig.getUploadPath(), file);
//            System.out.println("picture:" + avatar);
//            // TODO: 此处可以根据项目需求的业务进行操作，例如此处操作的是头像，可以将头像url保存到数据库，用户登录后，获取相应的url获取头像图片。
//            return ResultBean.success(avatar, "图片上传成功");
//
//        } catch (Exception e) {
//            return ResultBean.fail("图片上传失败");
//        }
//    }
//
//    /**
//     * 多图片上传
//     *
//     * @param file 要上传的图片文件
//     * @return
//     */
//    @PostMapping("updateManyPictures")
//    public ResultPicture updatePictures(@RequestParam("files") MultipartFile[] files) {
//        ResultPicture resultPicture = null;
//        List<String> data = new ArrayList<String>();
//        Integer errno = 0;
//        try {
//            for (MultipartFile file : files) {
//                if (!file.isEmpty()) {
//                    String avatar = FileUploadUtils.uploadPicture(WebConfig.getUploadPath(), file);
//                    System.out.println("avatar:" + avatar);
//                    data.add("http://localhost:8080/file/updatePicture?url=" + avatar);
//                    // TODO: 此处可以根据项目需求的业务进行操作，例如此处操作的是头像，可以将头像url保存到数据库，用户登录后，获取相应的url获取头像图片。
////                    resultBean = new ResultBean(200,true,"图片上传成功",avatar);
//                } else {
//                    errno++;
////                	resultBean = new ResultBean(5001,false,"图片上传失败",null);
//                }
//            }
//            resultPicture = new ResultPicture(errno, data);
//        } catch (Exception e) {
//            resultPicture = new ResultPicture(files.length, data);
//        }
//        return resultPicture;
//    }
//
//    /**
//     * 下载图片
//     *
//     * @param url      请求的图片url
//     * @param response
//     */
//    @GetMapping("uploadPicture")
//    public void getUrlPicture(String url, HttpServletResponse response) {
//        // 这里的url，我为了测试，直接就写静态的。
////        url = "D:/profile/test.jpg";
//        System.err.println("请求图片地址" + url);
//        File file = new File(WebConfig.getUploadPath() + url);
//        // 后缀名
////		String suffixName = url.substring(url.lastIndexOf("."));
//        // 判断文件是否存在如果不存在就返回默认图片或者进行异常处理
//        if (!(file.exists() && file.canRead())) {
////            file = new File("xxx/xxx.jpg");
//            System.out.println("文件不存在");
//        }
//        FileInputStream inputStream = null;
//        try {
//            inputStream = new FileInputStream(file);
//            byte[] data = new byte[(int) file.length()];
//            inputStream.read(data, 0, data.length);
//            inputStream.close();
//            response.setContentType("image/png;charset=utf-8");
//            OutputStream stream = response.getOutputStream();
//            stream.write(data);
//            stream.flush();
//            stream.close();
//        } catch (FileNotFoundException e) {
//            e.printStackTrace();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }

}
